from flask import Flask, escape, url_for, request
app = Flask(__name__)

# 调用 /projects 会默认加上/
@app.route('/projects/')
def projects():
    return 'The project page'

# 调用 /about/ 会返回404
@app.route('/about')
def about():
    return 'The about page'

@app.route('/')
def index():
    return 'index'

@app.route('/login')
def login():
    return 'login'

@app.route('/user/<username>')
def profile(username):
    return '{}\'s profile'.format(escape(username))

# 如果用了GET,会自动支持HEAD和OPTIONS方法
@app.route('/test', methods=['GET', 'POST'])
def test():
    if request.method == 'POST':
        return "Post"
    else:
        return "Get"

# test_request_context() 告诉 Flask 正在处理一个请求, 但没有真正请求
with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('login', next='/'))
    print(url_for('profile', username='John Doe'))

# url_for() 函数名作为第一个参数，参数对应URl中的变量， 用于构建指定函数的URL

# 注：
# HEAD 请求
# curl -I http://127.0.0.1:5000/test

# OPTIONS 请求
# curl -i -X OPTIONS http://127.0.0.1:5000/test